VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом

Документация Технические подробности Спецификация формата томов VeraCrypt

# Спецификация формата томов VeraCrypt

Формат томов на основе файлов идентичен формату томов на основе разделов/устройств (однако "заголовок тома" или ключевые данные для системного раздела/диска хранятся в последних 512 байтах первой дорожки логического диска). Тома VeraCrypt не имеют никаких "сигнатур" или идентифицирующих строк. Пока тома не расшифрованы, они выглядят как состоящие исключительно из случайных данных.
Свободное пространство на каждом томе VeraCrypt заполняется случайными данными при создании тома.* Случайные данные генерируются следующим образом: непосредственно перед началом форматирования тома VeraCrypt генератор случайных чисел создаёт временный ключ шифрования и временный вторичный ключ (режим XTS) (см. раздел Генератор случайных чисел). Выбранный пользователем алгоритм шифрования инициализируется временными ключами. Затем используется алгоритм шифрования для шифрования блоков открытого текста, состоящих из случайных байтов, созданных генератором случайных чисел. Алгоритм шифрования работает в режиме XTS (см. раздел Скрытый том). Полученные блоки зашифрованного текста используются для заполнения (перезаписи) свободного места на томе. Временные ключи хранятся в ОЗУ и стираются после завершения форматирования.

Спецификация формата томов VeraCrypt:

Смещение (байты) | Размер (байты) | Статус шифрования† | Описание
--- | --- | --- | ---
0 | 64 | Не зашифровано§ | Соль
64 | 4 | Зашифровано | ASCII-строка "VERA"
68 | 2 | Зашифровано | Версия формата заголовка тома (2)
70 | 2 | Зашифровано | Минимальная версия программы, необходимая для открытия тома
72 | 4 | Зашифровано | Контрольная сумма CRC-32 (расшифрованных) байтов 256-511
76 | 16 | Зашифровано | Зарезервировано (должно содержать нули)
92 | 8 | Зашифровано | Размер скрытого тома (для нескрытых томов – ноль)
100 | 8 | Зашифровано | Размер тома
108 | 8 | Зашифровано | Байтовое смещение начала области действия мастер-ключа
116 | 8 | Зашифровано | Размер зашифрованного участка в области действия мастер-ключа
124 | 4 | Зашифровано | Биты флагов (бит 0 установлен: шифрование системы; бит 1 установлен: несистемный "на месте" зашифрованный/расшифрованный том; биты 2-31 зарезервированы)
128 | 4 | Зашифровано | Размер сектора (в байтах)
132 | 120 | Зашифровано | Зарезервировано (должно содержать нули)
252 | 4 | Зашифровано | Контрольная сумма CRC-32 (расшифрованных) байтов 64-251
256 | Пер. | Зашифровано | Объединённые первичный и вторичный мастер-ключи**
512 | 65024 | Зашифровано | Зарезервировано (при шифровании системы этот элемент опущен‡‡)
65536 | 65536 | Зашифровано / | Область для заголовка скрытого тома (если внутри тома нет скрытого тома, эта область содержит случайные данные††). При шифровании системы этот элемент опущен.‡‡ См. байты 0-65535
|  | Не зашифровано§ |
131072 | Пер. | Зашифровано | Область данных (область действия мастер-ключа). При шифровании системы смещение может быть другим (зависит от смещения системного раздела)
S-131072‡ | 65536 | Зашифровано / | Резервная копия заголовка (зашифрованная другим ключом заголовка, сформированным с помощью другой соли). При шифровании системы этот элемент опущен.‡‡ См. байты 0-65535
|  | Не зашифровано§ |
S-65536‡ | 65536 | Зашифровано / | Резервная копия заголовка скрытого тома (зашифрованная другим ключом заголовка, сформированным с помощью другой соли). Если внутри тома нет скрытого тома, эта область содержит случайные данные.†† При шифровании системы этот элемент опущен.‡‡ См. байты 0-65535
|  | Не зашифровано§ |

Поля, расположенные с байта №0 (соль) и №256 (мастер-ключи) содержат случайные данные, созданные генератором случайных чисел (см. раздел Генератор случайных чисел) во время создания тома.
Если в томе VeraCrypt содержится скрытый том (внутри его пустого места), заголовок скрытого тома расположен с байта №65536 хост-тома (заголовок хост/внешнего тома расположен с байта №0 хост-тома – см. раздел Скрытый том). Если внутри тома VeraCrypt нет скрытого тома, байты 65536-131071 тома (то есть область, где может находиться заголовок скрытого тома) содержат случайные данные (см. информацию выше о методе заполнения свободного пространства тома случайными данными при создании тома). Расположение заголовка скрытого тома такое же, как и у стандартного тома (байты 0-65535).
Максимально возможный размер тома VeraCrypt – 263 байтов (8 589 934 592 ГБ). Однако из соображений безопасности (с учётом 128-битового размера блоков, используемых алгоритмами шифрования), максимально разрешённый размер тома составляет 1 ПБ (1 048 576 ГБ).

#### Встроенные резервные копии заголовков

Каждый том VeraCrypt содержит встроенную резервную копию заголовка, расположенную в конце тома (см. выше). Резервная копия заголовка это не копия заголовка тома, так как она зашифрована другим ключом заголовка, сформированным с использованием другой соли (см. раздел Формирование ключа заголовка, соль и количество итераций).
При смене пароля и/или PIM и/или ключевых файлов тома, либо при восстановлении заголовка из встроенной (или внешней) резервной копии выполняется перешифрование заголовка тома и резервной копии заголовка (встроенной в том) с помощью других ключей заголовка (сформированных с использованием вновь сгенерированной соли – соль для заголовка тома отличается от соли для резервной копии заголовка). Каждая соль создаётся генератором случайных чисел VeraCrypt (см. раздел Генератор случайных чисел).
Более подробные сведения о резервных копиях заголовков см. в подразделе Сервис > Восстановить заголовок тома в главе Главное окно программы.
Следующий раздел >>

* При условии, что отключены опции Быстрое форматирование и Динамический, а также что том не содержит файловую систему, которая была зашифрована на месте (обратите внимание, что VeraCrypt не позволяет пользователю создавать скрытый том внутри такого тома).
† Зашифрованные области заголовка тома шифруются в режиме XTS с использованием первичного и вторичного ключей заголовка. См. подробности в разделах Схема шифрования и Формирование ключа заголовка, соль и количество итераций.
‡ S обозначает размер хоста тома (в байтах).
§ Обратите внимание, что соль не нужно шифровать, так как её не требуется держать в секрете [7] (соль это последовательность случайных значений).
** Здесь хранится несколько объединённых мастер-ключей, когда том зашифрован с помощью каскада шифров (вторичные мастер-ключи используются для режима XTS).
†† См. выше в этом разделе информацию о методе заполнения свободного пространства тома случайными данными при создании тома.
‡‡ Здесь значение "шифрование системы" не включает скрытый том, содержащий скрытую операционную систему.